-
Notifications
You must be signed in to change notification settings - Fork 10.4k
[blazor] fix multiple calls to OnConnectionDownAsync #62518
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
[blazor] fix multiple calls to OnConnectionDownAsync #62518
Conversation
if (this.Client.Connected) | ||
{ | ||
await OnConnectionDownAsync(CancellationToken.None); | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't think this is the right change to fix the metric issue. It's changing an existing behavior of the system that users might be relying on.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
this event is called twice. That's a bug not a feature
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What is causing the 2nd call?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@javiercn does this make sense or you have another proposal for the fix ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I just tested the "close tab" and "navigate to non-interactive page". Both behave as expected, that is, they call the event once.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Terminate it's not being fired in those cases.
- Close tab will likely don't cause
unload
to fire. navigate to non-interactive page
- It takes a bit of time for the client to start the circuit disposal.
- If for some reason it's not happening, it's also a bug.
If we check for the circuit to be connected it won't fire when we want to eagerly terminate the circuit.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Maybe we need to call that event from places that call circuitHost.Client.SetDisconnected()
rather than relying that circuitHost.DisposeAsync()
would always call it.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Also I'm not sure that the new PauseAndDisposeCircuitHost
is calling SetDisconnected()
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I made the calls to OnConnectionDownAsync
more explicit now, instead of relying on the DisposeAsync
.
@javiercn please review again.
CircuitHost.OnConnectionDownAsync()
fromCircuitHost.DisposeAsync()
if it's not connected_circuitConnectedCounter.Add
fromCircuitMetrics.OnCircuitDown
Fixes #62219